import time

class Dispositivo:

    
    def __init__(self,retardo):
        self.__ratardo=retardo
        self.__memoria=[]
        self.__estado=0

    def setMemoria(self,memoria):
        self.__memoria=memoria
    
    def getMemoria(self):
        return self.__memoria
    
    def memLibre(self):
        t=0
        for i in self.__memoria:
            t=t+1
        libre=128-t
        return libre
    
    
    def escribirMem(self,datos):
        self.__estado=1
        time.sleep(self.__ratardo)
        self.__memoria.append(datos)
        self.__estado=0
        
    
    def bufer(self,temp,dis):
        if self.__estado==0:
            dis.escribirMem(temp)
            
            

class Comunicacion(object):
    
    def __init__(self):
        pass
        
        
    def enviarInfo(self,dis,info):
        tam=len(info)
        if tam<dis.memLibre():
            dis.bufer(info,dis)
            
    
    def recibirInfo(self,dis):
        m=""
        me=dis.getMemoria()
        for i in me:
            m=m+str(i)
        return me
            
    def imprimirInfo(self,dis):
        salida=self.recibirInfo(dis)
        print (salida)


retraso=input("Ingrese tiempo de retardo de ejecucion [seg]: ")
dis=Dispositivo(int(retraso))
com=Comunicacion()

cond=0
while cond==0:
    inicio=input("Escriba '1' para ingresar datos o '2' para mostrarlos: ")
    if int(inicio)==1:
        info=input("Ingrese un numero binario de 8 bits: ")
        com.enviarInfo(dis,info)
    elif int(inicio)==2:
        com.imprimirInfo(dis)
        cond=1
    else:
        print ("Error")


